The booming growth of network communication (e.g., Ethernet, Wi-Fi, Token Ring) and the need to decrease message frames from dropping at various points during network congestion has prompted the use of data flow control techniques. At a high level, the concept of data flow control is the process of overseeing and managing the rate of data transmission between various nodes of a network. For instance, if the rate of data transmission from a sending node is faster than the rate at which a receiving node can handle, then the device (e.g., switch) at the receiving node will send a signal to the sending node to temporarily stop transmission until it can catch up to speed.
A simple example of flow control is the stop-and-wait technique. In this particular example, the message to be transmitted is broken down into multiple frames. The receiver indicates that it is ready to receive data for each frame. The sender then sends the first frame. Meanwhile, the sender waits and listens for an acknowledgement (“ACK”) from the receiver to ensure that it has correctly received the frame. Only after the sender receives an ACK will it send the next frame.
Another example is Ethernet flow control. This technique stops and resumes the transmission of network traffic between two nodes on a full-duplex Ethernet physical link. By pausing and restarting data transmission, Ethernet flow control prevents buffers on the receiving nodes from overflowing and dropping frames. One way to pause data transmission is using an Ethernet PAUSE frame. PAUSE frames can be sent in both directions on the link. The receiver will transmit a PAUSE frame to the sender telling it to stop sending more traffic. On the other side, the sender will respond to the PAUSE frame and stop sending traffic.
Unfortunately, many conventional flow control techniques are inefficient and prone to transmission errors. For instance, if there are multi-packet messages simultaneously pending to be sent to a plurality of machines at various switches, an ACK or a PAUSE frame received from just one switch may significantly delay and back-up the transmission of all the messages. This results in undesirable time delay in message transmissions. Furthermore, the probability of a network switch dropping data packets increases when it attempts to receive long bursts of packets from multiple senders at approximately the same time. When data packets get dropped, the sending device has to retransmit these packets until their receipt is acknowledged from the receiver.